<?php

class DirectorioController extends Controller
{
    
        
    
	/**
	 * @var string the default layout for the views. Defaults to '//layouts/column2', meaning
	 * using two-column layout. See 'protected/views/layouts/column2.php'.
	 */
	public $layout='//layouts/column2';
        public $menu2 = null;
        public $defaultAction = 'admin';
        
        public function init() {
            Yii::app()->theme = 'admin';
        }

        /**
	 * @return array action filters
	 */
	public function filters()
	{
		return array(
			'accessControl', // perform access control for CRUD operations
		);
	}
        
        public function accessRules()
	{
		return array(
			array('allow',  // allow all users to perform 'index' and 'view' actions
				'roles'=>array('sysadmin','Usuario'),
			),
                        array('allow',
                                'actions'=>array('Posicion', 'Equipos', 'Ciudades', 'Ciudadesresidencia', 'Estados', 'Estadosresidencia','Fotos','Upload','ConcatenaNombre'),
                                'users'=>array('*'),
                        ),
			array('deny',  // deny all users
				'users'=>array('*'),
			),
		);
        }

	/**
	 * Displays a particular model.
	 * @param integer $id the ID of the model to be displayed
	 */
	public function actionView($id)
	{
		$this->render('view',array(
			'model'=>$this->loadModel($id),
		));
	}
        
        public function actionFotos(){
            
                
                $model = new Fotos;

                $this->render('fotos', array(
                    'model'=>$model,
                ));
            
           
        }
        
        public function actionUpload(){
                Yii::import("ext.EAjaxUpload.qqFileUploader");
 
                $folder='imgs/';// folder for uploaded files
                $allowedExtensions = array("jpg");//array("jpg","jpeg","gif","exe","mov" and etc...
                $sizeLimit = 10 * 1024 * 1024;// maximum file size in bytes
                $uploader = new qqFileUploader($allowedExtensions, $sizeLimit);
                $result = $uploader->handleUpload($folder);
                $return = htmlspecialchars(json_encode($result), ENT_NOQUOTES);

                $fileSize=filesize($folder.$result['filename']);//GETTING FILE SIZE
                
                $fileName=$result['filename'];//GETTING FILE NAME

                echo $return;// it's array
        }
        
	/**
	 * Creates a new model.
	 * If creation is successful, the browser will be redirected to the 'view' page.
	 */
	public function actionCreate()
	{
		$model=new Directorio;
                $paises = Paises::model()->findAll(array('order'=>'Nombre'));
                $estados = Estados::model()->findAll(array('order'=>'Nombre'));
                $estados_residencia = $estados;
                $ciudades = Ciudades::model()->findAll(array('order'=>'Nombre'));
                $ciudades_residencia = $ciudades;
                $deportes = Deportes::model()->findAll(array('order'=>'Nombre'));
                $equipos = Equipos::model()->findAll(array('order'=>'Nombre'));
                $posiciones = PosicionEspecialidad::model()->findAll(array('order'=>'Nombre'));
                $representantes = Representantes::model()->findAll(array('order'=>'Nombre'));
                $categoriassportketing = CategoriasSportketing::model()->findAll(array('order'=>'Nombre'));
                $paises_nacionalizacion = Nacionalidades::model()->findAll(array('order'=>'Nombre'));
		// Uncomment the following line if AJAX validation is needed
		// $this->performAjaxValidation($model);

		if(isset($_POST['Directorio']))
		{
			$model->attributes=$_POST['Directorio'];
                        if($model->Nacimiento_Pais!=''){
                            $estados = Estados::model()->findAll("id_pais=:Pais", array(':Pais'=>$model->Nacimiento_Pais));
                        }
                        if($model->Nacimiento_Estado){
                            $ciudades = Ciudades::model()->findAll("id_estado=:Estado", array(':Estado'=>$model->Nacimiento_Estado));
                        }
                        
                        if($model->Residencia_Pais!=''){
                            $estados_residencia = Estados::model()->findAll("id_pais=:Pais", array(':Pais'=>$model->Residencia_Pais));
                        }
                        if($model->Residencia_Estado){
                            $ciudades_residencia = Ciudades::model()->findAll("id_estado=:Estado", array(':Estado'=>$model->Residencia_Estado));
                        }
                        //Calculamos rango edad
                        
                        list($Y,$m,$d) = explode("-",$model->Fecha_Nacimiento);
                        $edad = date("Y") - $Y;
                        if( date("md") < $m.$d ) { $edad--; }
                        //echo $edad;
                        if($edad < 18){
                            $model->Rango_Edad = "-18";
                        }
                        if($edad > 17 && $edad < 30){
                            $model->Rango_Edad = "18-29";
                        }
                        if($edad > 29 && $edad < 40){
                            $model->Rango_Edad = "30-39";
                        }
                        if($edad > 39 && $edad < 50){
                            $model->Rango_Edad = "40-49";
                        }
                        if($edad > 49){
                            $model->Rango_Edad = "50+";
                        }
                        
                        //Recuperamos imagenes
                        $model->Foto1 = CUploadedFile::getInstance($model, 'Foto1');
                        $model->Foto2 = CUploadedFile::getInstance($model, 'Foto2');
                        $model->Foto3 = CUploadedFile::getInstance($model, 'Foto3');
                        
			
                        if($model->validate()){
                                Yii::import("ext.EPhpThumb.EPhpThumb");
                                if($model->Foto1){
                                    
                                    $nombreFoto1 = md5($model->Foto1.microtime()).'.'.$model->Foto1->getExtensionName();
                                    
                                    $model->Foto1->saveAs(Yii::app()->basePath.'/../fotos/usuario_'.$nombreFoto1);
                                    $model->Foto1 = 'usuario_'.$nombreFoto1;
                                    $imageinfo = getimagesize(Yii::app()->basePath.'/../fotos/usuario_'.$nombreFoto1);
                                    if($imageinfo['mime'] == 'image/jpeg'){
                                        $thumb=new EPhpThumb();
					$thumb->init(); //this is needed

							//chain functions
					$thumb->create(Yii::app()->basePath.'/../fotos/usuario_'.$nombreFoto1)->resize(75,75)->save(Yii::app()->basePath.'/../fotos/mini_usuario_'.$nombreFoto1);
					$thumb->create(Yii::app()->basePath.'/../fotos/usuario_'.$nombreFoto1)->resize(310,310)->save(Yii::app()->basePath.'/../fotos/medio_usuario_'.$nombreFoto1);
                                    }

                                }else{
                                    if($model->Sexo=="Hombre"){
                                        $model->Foto1 = "null";
                                    }else{
                                        $model->Foto1 = "nullw";
                                    }
                                }
                                if($model->Foto2){
                                    $nombreFoto2 = md5($model->Foto2.microtime()).'.'.$model->Foto2->getExtensionName();
                                    $model->Foto2->saveAs(Yii::app()->basePath.'/../fotos/usuario_'.$nombreFoto2);
                                    $model->Foto2 = 'usuario_'.$nombreFoto2;
                                    $imageinfo = getimagesize(Yii::app()->basePath.'/../fotos/usuario_'.$nombreFoto2);
                                    if($imageinfo['mime'] == 'image/jpeg'){
                                        $thumb=new EPhpThumb();
					$thumb->init(); //this is needed

							//chain functions
					$thumb->create(Yii::app()->basePath.'/../fotos/usuario_'.$nombreFoto2)->resize(75,75)->save(Yii::app()->basePath.'/../fotos/mini_usuario_'.$nombreFoto2);
					$thumb->create(Yii::app()->basePath.'/../fotos/usuario_'.$nombreFoto2)->resize(310,310)->save(Yii::app()->basePath.'/../fotos/medio_usuario_'.$nombreFoto2);
                                    }
                                }else{
                                    if($model->Sexo=="Hombre"){
                                        $model->Foto2 = "null";
                                    }else{
                                        $model->Foto2 = "nullw";
                                    }
                                }
                                if($model->Foto3){
                                    $nombreFoto3 = md5($model->Foto3.microtime()).'.'.$model->Foto3->getExtensionName();
                                    $model->Foto3->saveAs(Yii::app()->basePath.'/../fotos/usuario_'.$nombreFoto3);
                                    $model->Foto3 = 'usuario_'.$nombreFoto3;
                                    $imageinfo = getimagesize(Yii::app()->basePath.'/../fotos/usuario_'.$nombreFoto3);
                                    if($imageinfo['mime'] == 'image/jpeg'){
                                        $thumb=new EPhpThumb();
					$thumb->init(); //this is needed

							//chain functions
					$thumb->create(Yii::app()->basePath.'/../fotos/usuario_'.$nombreFoto3)->resize(75,75)->save(Yii::app()->basePath.'/../fotos/mini_usuario_'.$nombreFoto3);
					$thumb->create(Yii::app()->basePath.'/../fotos/usuario_'.$nombreFoto3)->resize(310,310)->save(Yii::app()->basePath.'/../fotos/medio_usuario_'.$nombreFoto3);
                                    }
                                }else{
                                    if($model->Sexo=="Hombre"){
                                        $model->Foto3 = "null";
                                    }else{
                                        $model->Foto3 = "nullw";
                                    }
                                }
				
                                if($model->save()){
                                   $this->redirect(array('view','id'=>$model->id_jugador)); 
                                }
				
					
						
					
		        
				
                                
                        
			
                        }
                        
                }

		$this->render('create',array(
			'model'=>$model,
                        'paises'=>$paises,
                        'estados'=>$estados,
                        'ciudades'=>$ciudades,
                        'estados_residencia'=>$estados_residencia,
                        'ciudades_residencia'=>$ciudades_residencia,
                        'deportes'=>$deportes,
                        'equipos'=>$equipos,
                        'posiciones'=>$posiciones,
                        'representantes'=>$representantes,
                        'categoriassportketing'=>$categoriassportketing,
                        'paises_nacionalizacion'=>$paises_nacionalizacion,
		));
	}
        
        public function actionPosicion(){
            $posiciones = PosicionEspecialidad::model()->findAll(
                    'id_deporte=:id_deporte', 
                    array(':id_deporte'=>(int)$_POST['Directorio']['Deporte']));
 
            $posiciones=CHtml::listData($posiciones,'id_posicion','Nombre');
            echo CHtml::tag('option',array('value'=>''),CHtml::encode("Elige la posición"),true);
            echo CHtml::tag('option',array('value'=>'0'),'Todas/No aplica',false);
            foreach($posiciones as $value=>$name)
            {
                echo CHtml::tag('option',
                        array('value'=>$value),CHtml::encode($name),true);
            }
        }
        public function actionEquipos(){
            $equipos = Equipos::model()->findAll(
                    'id_deporte=:id_deporte', 
                    array(':id_deporte'=>(int)$_POST['Directorio']['Deporte']));
 
            $equipos=CHtml::listData($equipos,'id_equipo','Nombre');
            echo CHtml::tag('option',array('value'=>''),CHtml::encode("Elige el Equipo"),true);
            echo CHtml::tag('option',array('value'=>'0'),'No aplica',false);
            foreach($equipos as $value=>$name)
            {
                echo CHtml::tag('option',
                        array('value'=>$value),CHtml::encode($name),true);
            }
        }
        
        public function actionCiudades(){
            $ciudades = Ciudades::model()->findAll(
                    'id_estado=:id_estado', 
                    array(':id_estado'=>(int)$_POST['Directorio']['Nacimiento_Estado']));
 
            $ciudades=CHtml::listData($ciudades,'id_ciudad','Nombre');
            echo CHtml::tag('option',array('value'=>''),CHtml::encode("Elige la ciudad"),true);
            echo CHtml::tag('option',array('value'=>'0'),CHtml::encode("No disponible"),true);
            foreach($ciudades as $value=>$name)
            {
                echo CHtml::tag('option',
                        array('value'=>$value),CHtml::encode($name),true);
            }
        }
        public function actionCiudadesresidencia(){
            $ciudades = Ciudades::model()->findAll(
                    'id_estado=:id_estado', 
                    array(':id_estado'=>(int)$_POST['Directorio']['Residencia_Estado']));
 
            $ciudades=CHtml::listData($ciudades,'id_ciudad','Nombre');
            echo CHtml::tag('option',array('value'=>''),CHtml::encode("Elige la ciudad"),true);
            echo CHtml::tag('option',array('value'=>'0'),CHtml::encode("No disponible"),true);
            foreach($ciudades as $value=>$name)
            {
                echo CHtml::tag('option',
                        array('value'=>$value),CHtml::encode($name),true);
            }
        }
        
        
        public function actionEstados(){
            
            $ciudades = Estados::model()->findAll(
                    'id_pais=:id_pais', 
                    array(':id_pais'=>(int)$_POST['Directorio']['Nacimiento_Pais']));
            
 
            $estados=CHtml::listData($ciudades,'id_estado','Nombre');
            echo CHtml::tag('option',array('value'=>''),CHtml::encode("Elige el estado"),true);
            echo CHtml::tag('option',array('value'=>'0'),CHtml::encode("No disponible"),true);
            foreach($estados as $value=>$name)
            {
                echo CHtml::tag('option',
                        array('value'=>$value),CHtml::encode($name),true);
            }
        }
        public function actionEstadosresidencia(){
            
            $ciudades = Estados::model()->findAll(
                    'id_pais=:id_pais', 
                    array(':id_pais'=>(int)$_POST['Directorio']['Residencia_Pais']));
            
 
            $estados=CHtml::listData($ciudades,'id_estado','Nombre');
            echo CHtml::tag('option',array('value'=>''),CHtml::encode("Elige el estado"),true);
            echo CHtml::tag('option',array('value'=>'0'),CHtml::encode("No disponible"),true);
            foreach($estados as $value=>$name)
            {
                echo CHtml::tag('option',
                        array('value'=>$value),CHtml::encode($name),true);
            }
        }

	/**
	 * Updates a particular model.
	 * If update is successful, the browser will be redirected to the 'view' page.
	 * @param integer $id the ID of the model to be updated
	 */
	public function actionUpdate($id)
	{
		$model=$this->loadModel($id);
                
                
                
                
                $paises = Paises::model()->findAll(array('order'=>'Nombre'));
                $deportes = Deportes::model()->findAll(array('order'=>'Nombre'));
                $equipos = Equipos::model()->findAll(array('condition'=>'id_deporte=:Deporte', 'params'=>array(':Deporte'=>$model->Deporte),'order'=>'Nombre'));
                $posiciones = PosicionEspecialidad::model()->findAll(array('condition'=>'id_posicion=:Posicion_Especialidad', 'params'=>array(':Posicion_Especialidad'=>$model->Posicion_Especialidad),'order'=>'Nombre'));
                $estados_nacimiento = Estados::model()->findAll(array('condition'=>'id_pais=:Pais', 'params'=>array(':Pais'=>$model->Nacimiento_Pais),'order'=>'Nombre'));
                $ciudades_nacimiento = Ciudades::model()->findAll(array('condition'=>'id_estado=:Estado', 'params'=>array(':Estado'=>$model->Nacimiento_Estado),'order'=>'Nombre'));
                $estados_residencia = Estados::model()->findAll(array('condition'=>'id_pais=:Pais', 'params'=>array(':Pais'=>$model->Residencia_Pais),'order'=>'Nombre'));
                $ciudades_residencia = Ciudades::model()->findAll(array('condition'=>'id_estado=:Estado', 'params'=>array(':Estado'=>$model->Residencia_Estado),'order'=>'Nombre'));
                $ciudades = Ciudades::model()->findAll(array('order'=>'Nombre'));
                $representantes = Representantes::model()->findAll(array('order'=>'Nombre'));
                $categoriassportketing = CategoriasSportketing::model()->findAll(array('order'=>'Nombre'));
                $paises_nacionalizacion = Nacionalidades::model()->findAll(array('order'=>'Nombre'));
		// Uncomment the following line if AJAX validation is needed
		// $this->performAjaxValidation($model);

		if(isset($_POST['Directorio']))
		{
			$model->attributes=$_POST['Directorio'];
                        
                        list($Y,$m,$d) = explode("-",$model->Fecha_Nacimiento);
                        $edad = date("Y") - $Y;
                        if( date("md") < $m.$d ) { $edad--; }
                        //echo $edad;
                        if($edad < 18){
                            $model->Rango_Edad = "-18";
                        }
                        if($edad > 17 && $edad < 30){
                            $model->Rango_Edad = "18 - 29";
                        }
                        if($edad > 29 && $edad < 40){
                            $model->Rango_Edad = "30 - 39";
                        }
                        if($edad > 39 && $edad < 50){
                            $model->Rango_Edad = "40 - 49";
                        }
                        if($edad > 49){
                            $model->Rango_Edad = "50+";
                        }
                        
                        
			 //Recuperamos imagenes
                        
                        
                        
                        
			
                        if($model->validate()){
                                Yii::import("ext.EPhpThumb.EPhpThumb");
                                if(CUploadedFile::getInstance($model, 'Foto1')){
                                    $model->Foto1 = CUploadedFile::getInstance($model, 'Foto1');
                                    $nombreFoto1 = md5($model->Foto1.microtime()).'.'.$model->Foto1->getExtensionName();
                                    
                                    $model->Foto1->saveAs(Yii::app()->basePath.'/../fotos/usuario_'.$nombreFoto1);
                                    $model->Foto1 = 'usuario_'.$nombreFoto1;
                                    $imageinfo = getimagesize(Yii::app()->basePath.'/../fotos/usuario_'.$nombreFoto1);
                                    if($imageinfo['mime'] == 'image/jpeg'){
                                        $thumb=new EPhpThumb();
					$thumb->init(); //this is needed

							//chain functions
					$thumb->create(Yii::app()->basePath.'/../fotos/usuario_'.$nombreFoto1)->resize(75,75)->save(Yii::app()->basePath.'/../fotos/mini_usuario_'.$nombreFoto1);
					$thumb->create(Yii::app()->basePath.'/../fotos/usuario_'.$nombreFoto1)->resize(310,310)->save(Yii::app()->basePath.'/../fotos/medio_usuario_'.$nombreFoto1);
                                    }

                                }
                                if(CUploadedFile::getInstance($model, 'Foto2')){
                                    $model->Foto2 = CUploadedFile::getInstance($model, 'Foto2');
                                    $nombreFoto2 = md5($model->Foto2.microtime()).'.'.$model->Foto2->getExtensionName();
                                    $model->Foto2->saveAs(Yii::app()->basePath.'/../fotos/usuario_'.$nombreFoto2);
                                    $model->Foto2 = 'usuario_'.$nombreFoto2;
                                    $imageinfo = getimagesize(Yii::app()->basePath.'/../fotos/usuario_'.$nombreFoto2);
                                    if($imageinfo['mime'] == 'image/jpeg'){
                                        $thumb=new EPhpThumb();
					$thumb->init(); //this is needed

							//chain functions
					$thumb->create(Yii::app()->basePath.'/../fotos/usuario_'.$nombreFoto2)->resize(75,75)->save(Yii::app()->basePath.'/../fotos/mini_usuario_'.$nombreFoto2);
					$thumb->create(Yii::app()->basePath.'/../fotos/usuario_'.$nombreFoto2)->resize(310,310)->save(Yii::app()->basePath.'/../fotos/medio_usuario_'.$nombreFoto2);
                                    }
                                }
                                if(CUploadedFile::getInstance($model, 'Foto3')){
                                    $model->Foto3 = CUploadedFile::getInstance($model, 'Foto3');
                                    $nombreFoto3 = md5($model->Foto3.microtime()).'.'.$model->Foto3->getExtensionName();
                                    $model->Foto3->saveAs(Yii::app()->basePath.'/../fotos/usuario_'.$nombreFoto3);
                                    $model->Foto3 = 'usuario_'.$nombreFoto3;
                                    $imageinfo = getimagesize(Yii::app()->basePath.'/../fotos/usuario_'.$nombreFoto3);
                                    if($imageinfo['mime'] == 'image/jpeg'){
                                        $thumb=new EPhpThumb();
					$thumb->init(); //this is needed

							//chain functions
					$thumb->create(Yii::app()->basePath.'/../fotos/usuario_'.$nombreFoto3)->resize(75,75)->save(Yii::app()->basePath.'/../fotos/mini_usuario_'.$nombreFoto3);
					$thumb->create(Yii::app()->basePath.'/../fotos/usuario_'.$nombreFoto3)->resize(310,310)->save(Yii::app()->basePath.'/../fotos/medio_usuario_'.$nombreFoto3);
                                    }
                                }
				
                                if($model->save()){
                                   $this->redirect(array('view','id'=>$model->id_jugador)); 
                                }
				
					
						
					
		        
				
                                
                        
			
                        }
		}

		$this->render('update',array(
			'model'=>$model,
                        'paises'=>$paises,
                        'estados_nacimiento'=>$estados_nacimiento,
                        'estados_residencia'=>$estados_residencia,
                        'ciudades_nacimiento'=>$ciudades_nacimiento,
                        'ciudades_residencia'=>$ciudades_residencia,
                        'deportes'=>$deportes,
                        'equipos'=>$equipos,
                        'posiciones'=>$posiciones,
                        'representantes'=>$representantes,
                        'categoriassportketing'=>$categoriassportketing,
                        'paises_nacionalizacion'=>$paises_nacionalizacion,
		));
	}

	/**
	 * Deletes a particular model.
	 * If deletion is successful, the browser will be redirected to the 'admin' page.
	 * @param integer $id the ID of the model to be deleted
	 */
	public function actionDelete($id)
	{
		if(Yii::app()->request->isPostRequest)
		{
			// we only allow deletion via POST request
			$this->loadModel($id)->delete();

			// if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser
			if(!isset($_GET['ajax']))
				$this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin'));
		}
		else
			throw new CHttpException(400,'Invalid request. Please do not repeat this request again.');
	}

	/**
	 * Lists all models.
	 */
	public function actionIndex()
	{
		$dataProvider=new CActiveDataProvider('Directorio');
		$this->render('index',array(
			'dataProvider'=>$dataProvider,
		));
	}

	/**
	 * Manages all models.
	 */
	public function actionAdmin()
	{
		$model=new Directorio('search');
                $array_deportes = Deportes::model()->findAll(array('order'=>'Nombre'));
                $array_equipos = Equipos::model()->findAll(array('order'=>'Nombre'));
                $array_posiciones = PosicionEspecialidad::model()->findAll(array('order'=>'Nombre'));
                
                
		$model->unsetAttributes();  // clear any default values
		if(isset($_GET['Directorio']))
			$model->attributes=$_GET['Directorio'];

		$this->render('admin',array(
			'model'=>$model,
                        'array_deportes'=>$array_deportes,
                        'array_equipos'=>$array_equipos,
                        'array_posiciones'=>$array_posiciones,
                        
		));
	}
        
        protected function concatenaNombre($data,$row){
            return $data->Nombre.' '.$data->Apellidos.' '.$data->Alias;
        }
        
        protected function recuperaEquipo($data,$row){
            if($data->Equipo!=0){
                $equipo = Equipos::model()->findByPk($data->Equipo);
                return $equipo->Nombre;
            }else{
                return "No aplica";
            }
        }
        
        protected function recuperaDeporte($data,$row){
            if($data->Deporte!=0){
                $deporte = Deportes::model()->findByPk($data->Deporte);
                return $deporte->Nombre;
            }else{
                return "No aplica";
            }
        }
        
        protected function recuperaPosicion($data,$row){
            if($data->Equipo!=0){
                $posicion = PosicionEspecialidad::model()->findByPk($data->Posicion_Especialidad);
                return $posicion->Nombre;
            }else{
                return "No aplica";
            }
        }
        /**
	 * Returns the data model based on the primary key given in the GET variable.
	 * If the data model is not found, an HTTP exception will be raised.
	 * @param integer the ID of the model to be loaded
	 */
	public function loadModel($id)
	{
		$model=Directorio::model()->findByPk($id);
		if($model===null)
			throw new CHttpException(404,'The requested page does not exist.');
		return $model;
	}

	/**
	 * Performs the AJAX validation.
	 * @param CModel the model to be validated
	 */
	protected function performAjaxValidation($model)
	{
		if(isset($_POST['ajax']) && $_POST['ajax']==='directorio-form')
		{
			echo CActiveForm::validate($model);
			Yii::app()->end();
		}
	}
}
